/**
 * @ProjectName: p2p_core_sina 
 * @Copyright: Copyright (c) 2016, qudoulicai All Rights Reserved. 
 * @address: Hangzhou City, Zhejiang Province, China
 * @date: 2016年1月18日 上午11:39:56
 * @Description: 微信菜单
 */
package com.qdlc.p2p.dal.model;

import com.qdlc.p2p.common.exception.BusinessException;
import com.qdlc.p2p.common.util.StringUtil;
import com.qdlc.p2p.dal.dto.WeChatMenu;
import org.springframework.beans.BeanUtils;

/**
 * <p>微信菜单Model</p>
 * @author Kaiju Zhao 2016年1月18日 上午11:39:56
 * @version V1.0   
 * @modificationHistory=========================逻辑或功能性重大变更记录
 * @modify by user: {修改人} 2016年1月18日 上午11:39:56
 * @modify by reason:{原因}
 */
public class WeChatMenuModel extends WeChatMenu {
	
	/**
     * 序列化ID
     */
    private static final long serialVersionUID = 1L;
    
    public WeChatMenuModel() {
        super();
    }
    
    public WeChatMenuModel(String name, String content, Long parentId,
                           Byte level, Byte buttonType) {
        if (null == parentId) {
            parentId = 0L;
        }
        if (null == level) {
            level = 0;
        }
        if (null == buttonType) {
            buttonType = 0;
        }
        this.setName(StringUtil.isNull(name));
        this.setContent(StringUtil.isNull(content));
        this.setParentId(parentId);
        this.setLevel(level);
        this.setButtonType(buttonType);
    }
    
    public WeChatMenuModel(String name, String content, Byte level,
                           Byte buttonType) {
        if (null == level) {
            level = 0;
        }
        if (null == buttonType) {
            buttonType = 0;
        }
        this.setName(StringUtil.isNull(name));
        this.setContent(StringUtil.isNull(content));
        this.setLevel(level);
        this.setButtonType(buttonType);
    }
    
    /**
     * <p>拷贝属性组成微信菜单的Model对象</p>
     * @author Kaiju Zhao 2016年1月18日 上午11:43:50
     * @param weChatMenu
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 上午11:43:50
     * @modify by reason:{原因}
     */
   public static WeChatMenuModel instance(WeChatMenu weChatMenu) {
       WeChatMenuModel weChatMenuModel = new WeChatMenuModel();
       BeanUtils.copyProperties(weChatMenu, weChatMenuModel);
       return weChatMenuModel;
   }

   /**
     * <p>拷贝属性组成微信菜单的原型对象</p>
     * @author Kaiju Zhao 2016年1月18日 上午11:45:09
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 上午11:45:09
     * @modify by reason:{原因}
     */
    public WeChatMenu prototype() {
       WeChatMenu weChatMenu = new WeChatMenu();
       BeanUtils.copyProperties(this, weChatMenu);
       return weChatMenu;
   }
    
    /**
     * <p>校验微信菜单数据</p>
     * @author Kaiju Zhao 2016年1月18日 下午3:41:53
     * @return
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年1月18日 下午3:41:53
     * @modify by reason:{原因}
     */
    public int validWeChatMenuModel() {
        byte level = getLevel();
        if (level > 2
                || 0 == level) {
            throw new BusinessException("微信菜单层级错误！参数：level = " + level);
        }
        
        if (StringUtil.isBlank(getName())) {
            throw new BusinessException("微信菜单名称不能为空！参数：name = " + getName());
        }
        
        if (StringUtil.isBlank(getContent())) {
            throw new BusinessException("微信菜单名称对应的内容不能为空！参数：content = " + getContent());
        }
        
        return -1;
    }
}
